'TITLE("Recherche des labels et des connecteurs...")'
do i=1 to objets
'TYPE(O='i')'
if result=4 | result=12 | result=11 then do
'ABS(FINDLINE(1,COL(O),LINE(O)))'; j=result
if j>0 then do
net=equi.j
'READTEXT(O)'; label=result
label.net=label
end
end
end
'TITLE("Recherche des alimentations...")'
do i=1 to objets
'FINDPART('i',"ALIMENTATION")'; i=result
if i>0 then do
j=connexion_broche(i,1)
if j>0 then do
net=equi.j
'READTEXT(GETVAL('i'))'; label=result
label.net=label
end
end
else leave
end
'TITLE("Test redondances...")'
do i=1 to nets
do j=i+1 to nets
if label.j~="" then do
if label.i=label.j then do
do k=1 to objets
if equi.k=j then equi.k=i
end
label.j=""
end
end
end
end
'TITLE("Recherche des masses...")'
do i=1 to objets
'FINDPART('i',"MASSE")'; i=result
if i>0 then do
j=connexion_broche(i,1)
if j>0 then do
equi.0=0; label.0=0
call changer_labels(0,j)
end
end
else leave
end
masse=0
do i=0 to nets
if label.i=0 then do
masse=1
leave i
end
end
if masse=0 then do
'REQUEST("Attention: le circuit"+CHR(10)+"ne possède pas de masse!"+CHR(10)+"Sa simulation sera impossible"+CHR(10)+"Voulez-vous continuer?")'
if result<1 then exit
end
do until c=0
'TITLE("Établissement équipotentielles terminé"):SELECT("Choisissez une action"+CHR(10)+"Visualiser les équipotentielles"+CHR(10)+"Contrôler la netlist"+CHR(10)+"Sauver la netlist"+CHR(10)+"Abandonner ce script")'
'SELECT("Type d''analyse à effectuer"+CHR(10)+"Point de fonctionnement"+CHR(10)+"AC"+CHR(10)+"DC"+CHR(10)+"Transient")'
select
when result=1 then do
analyse="OP"
end
when result=2 then do
'SELECT("Type de variation"+CHR(10)+"Décade"+CHR(10)+"Octave"+CHR(10)+"Linéaire")'
select
when result=1 then do
f="DEC "; v="par décade"
end
when result=2 then do
f="OCT "; v="par octave"
end
when result=3 then do
f="LIN "; v="de test"
end
otherwise do
close(file)
return
end
end
'ASKNUM("Nombre de points 'v'?",100)'
f=f||result
'ASKTEXT("Quelle est la fréquence de début?","10")'
f=f||" "||result
'ASKTEXT("Quelle est la fréquence de fin?","100")'
analyse="AC "||f||' '||result
end
when result=3 then do
'UNMARK(-1):MESSAGE("Vous devez maintenant"+CHR(10)+"sélectionner une source")'
'PICKOBJ("Sélectionnez le générateur à faire varier.")'
f=result
if f<1 then return
'MARK('f'):TYPE('f')'
if result=5 then 'READTEXT('f')'
else 'READTEXT(GETREF('f'))'
f=result
'V0=ASKTEXT("Quelle est la valeur de départ?","V")'
f=f||' '||result
'V1=ASKTEXT("Quelle est la valeur finale.","V")'
f=f||' '||result
'ASKTEXT("Quel est l''incrément?",STR((VAL(V1)-VAL(V0))/100)+"V")'
analyse="DC "||f||' '||result
end
when result=4 then do
'ASKTEXT("Temps de simulation?","s")'; temps=result
'ASKTEXT("Pas de simulation?","s")'; pas=result
'ASKTEXT("Temps de début de la simulation?","s")'; d=result
analyse="tran "||pas||" "||temps||" "||d
end
otherwise
return
end
end
if analyse~="" then writeln(file,"."||analyse)
i=1
s=''
do i=1 to objets
'FINDOBJ('i',TEXTE,-1,-1)'; i=result
if i>0 then do
'READTEXT('i')'; t=result
if left(t,9)=".OUTPUT: " then do
s=substr(t,9)
end
end
else leave
end
if s='' then do
'UNMARK(-1):MESSAGE("Vous pouvez maintenant"+CHR(10)+"spécifier quels sont les"+CHR(10)+"signaux à visualiser"+CHR(10)+"Appuyez sur le bouton"+CHR(10)+"droit pour arrêter")'
i=1
do while i>0
'PICKOBJ("Sélectionnez un signal (label ou liaison)")'